home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / info-service / www / src / midaswww-1.0 / midasutil.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-16  |  1.1 KB  |  61 lines

  1. #include <Mrm/MrmAppl.h>                        /* Motif Toolkit and MRM */
  2. #include <string.h>
  3. #include "midasoperand.h"
  4.  
  5. /*
  6.  *  General utility functions
  7.  */
  8.  
  9. static MidasOperand Locate(needle,haystack)
  10. char *needle;
  11. char *haystack;
  12. {  
  13.   MidasOperand Temp;
  14.   char *p = strstr(haystack,needle);
  15.   
  16.   Temp.Value.I = p ? p-haystack : strlen(haystack);  
  17.   Temp.Type = MInt;
  18.   Temp.Dynamic = FALSE;
  19.   
  20.   return Temp;
  21. }
  22. static MidasOperand Extract(start,length,string)
  23. int start;
  24. int length;
  25. char *string;
  26.   MidasOperand Temp;
  27.   int len = strlen(string);
  28.   char *p;
  29.  
  30.   if (start>=len) p = NULL;
  31.   else 
  32.   {   
  33.     p = string + start; 
  34.     if (start+length < len) *(p+length) = '\0'; 
  35.   }
  36.   
  37.   Temp.Value.P = XtNewString(p);
  38.   Temp.Type = MString;
  39.   Temp.Dynamic = TRUE;
  40.  
  41.   return Temp;
  42. }
  43. static MidasOperand Length(string)
  44. char *string;
  45. {
  46.   MidasOperand Temp;
  47.  
  48.   Temp.Value.I = strlen(string);  
  49.   Temp.Type = MInt;
  50.   Temp.Dynamic = FALSE;
  51.   
  52.   return Temp;
  53. }
  54. void MidasUtilInit()
  55. {
  56.    MidasDeclareFunction("LENGTH(name)"         ,Length);
  57.    MidasDeclareFunction("EXTRACT(Int,Int,name)",Extract);
  58.    MidasDeclareFunction("LOCATE(name,name)"    ,Locate);
  59. }
  60.